package com.zpark.se.string;

/**
 * String类常用方法：增、删、改、查、比较
 */
public class Demo05 {
    public static void main(String[] args) {
        String s = "you see see you, noe day day de";
        /*
            charAt(int index) ：返回 char指定索引处的值。
         */
        char c = s.charAt(10);
        System.out.println(c);

        /*
        compareTo(String anotherString) ：按字典顺序比较两个字符串。
        如果参数字符串等于此字符串，则值0；如果此字符串在字典顺序上小于字符串参数，则
        小于0的值；如果此字符串在字典顺序上大于string参数，则该值大于0。
         */
        String s1 = "Hello";
        String s2 = "Helll";
        int i = s1.compareTo(s2);
        System.out.println(i);

        /*
        compareToIgnoreCase(String str) : 比较两个字符串大小，忽略大小写
         */
        String s3 = "HellO";
        String s4 = "HeLLL";
        System.out.println(s3.compareToIgnoreCase(s4));

        /*
        concat(String str) ：将指定的字符串连接到该字符串的末尾。
         */
        String s5 = "Java";
        String s6 = s5.concat("Python");
        System.out.println(s6); // JavaPython

        /*
        endsWith(String suffix) :测试此字符串是否以指定的后缀结尾
         */
        // 案例：判断QQ邮箱是否正确
        String s7 = "2227894845@qq.com";
        boolean res1 = s7.endsWith("@qq.com");
        System.out.println(res1);

        /*
        equals(Object anObject) : 将此字符串与指定对象进行比较。
        比较两个字符串内容是否一致
        ==和equals的区别：
            ==：如果是基本数据类型作比较，则直接比较变量的值是否相等
                如果比较的是两个对象，则比较的是对象对地址是否相同（是否为同一个对象）
            equals方法：比较的是两个对象的内容是否相同
        equalsIgnoreCase(String anotherString) : 比较两个字符串内容是否一致（忽略大小写）
         */
        String s8 = "Java";
        String s88 = new String("Java");
        String s888 = "Java";
        String s9 = "JAVA";
        System.out.println(s8 == s88); // 比较两个对象的地址和内容是否一致
        System.err.println(s8 == s888); // 比较两个对象的地址和内容是否一致
        System.out.println(s8.equals(s88)); // 比较对象内容是否一致
        System.out.println(s8.equalsIgnoreCase(s9));

        /*
        hashCode() ：返回此字符串的哈希码
         */
        System.out.println(s8.hashCode());
        System.out.println(s9.hashCode());

        /*
        indexOf(val)：返回指定字符第一次出现的字符串内的索引。
        lastIndexOf(val)：返回指定字符最后一次出现的字符串内的索引。
         */
        int res2 = s.indexOf("see");
        System.out.println(res2);

        System.out.println(s.lastIndexOf("see"));
    }
}
